iOS Testing Environment
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)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Apple Developer Program
Provisioning identity je skup javnih i privatnih ključeva koji su povezani sa Apple developer nalogom. Da biste potpisali aplikacije, potrebno je da platite 99$/godina 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 iz keychain-a.
Provisioning profili se čuvaju unutar telefona u /Library/MobileDevice/ProvisioningProfiles
Simulator
note
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 aplikaciji 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 malware.
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)
Jednom kada 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, ovde nećete pronaći aplikaciju. 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 dostupni iOS emulator. To je preduzetničko SaaS rešenje sa modelom licence po korisniku i ne nudi probnu licencu.
Nema potrebe za Jailbreak-om
Pogledajte ovaj blog post o tome kako testirati iOS aplikaciju na ne jailbroken uređaju: https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
Jailbreaking
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.
note
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 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-a ima za cilj da zaobiđe Apple-ove zaštite potpisivanja koda kako bi se pokrenuo nepodpisani kod, proces koji otežava Apple-ova kontinuirana unapređenja bezbednosti.
Izazovi Jailbreak-ovanja
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 jailbreak-ovanje vremenski osetljivim pitanjem. Uređaji korišćeni za bezbednosno testiranje ne bi trebali biti ažurirani osim ako re-jailbreak nije zagarantovan.
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.
Varijante Jailbreak-ovanja
- 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 re-jailbreak-ovanje bez potrebe za računarom.
- Untethered jailbreak-ovi nude trajno rešenje za jailbreak bez potrebe za ponovnim primenom.
Alati i Resursi za Jailbreaking
Alati za jailbreak-ovanje 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.
Modifikovanje vašeg uređaja nosi rizike, i jailbreak-ovanje treba pristupiti sa oprezom.
Prednosti i Rizici Jailbreak-ovanja
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, jailbreak-ovanje nije preporučljivo zbog potencijalnih bezbednosnih rizika i nestabilnosti uređaja.
Nakon Jailbreak-ovanja
Detekcija Jailbreak-ovanja
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-ovanja iOS-a 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
Zaobilaženje Detekcije Jailbreak-ovanja
- 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.
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)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.