11 KiB
iOS Testing Environment
{% hint style="success" %}
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Apple Developer Program
'n Provisioning identity is 'n versameling van publieke en private sleutels wat aan 'n Apple ontwikkelaar rekening gekoppel is. Om apps te teken moet jy 99$/jaar betaal om te registreer in die Apple Developer Program om jou provisioning identity te verkry. Sonder dit sal jy nie in staat wees om toepassings vanaf die bronkode op 'n fisiese toestel te loop nie. 'n Ander opsie om dit te doen is om 'n jailbroken toestel te gebruik.
Begin in Xcode 7.2 het Apple 'n opsie verskaf om 'n gratis iOS ontwikkeling provisioning profiel te skep wat jou toelaat om jou toepassing op 'n werklike iPhone te skryf en te toets. Gaan na Xcode --> Preferences --> Accounts --> + (Voeg nuwe Appli ID by jou besonderhede) --> Klik op die Apple ID wat geskep is --> Bestuur Sertifikate --> + (Apple Development) --> Klaar
__Dan, om jou toepassing op jou iPhone te laat loop moet jy eers aangee dat die iPhone die rekenaar moet vertrou. Dan kan jy probeer om die toepassing op die mobiele toestel vanaf Xcode te laat loop, maar 'n fout sal verskyn. Gaan dus na Settings --> General --> Profiles and Device Management --> Kies die onbetroubare profiel en klik "Vertrou".
Let daarop dat toepassings wat deur dieselfde teken sertifikaat geteken is, hulpbronne op 'n veilige manier kan deel, soos sleutelsak items.
Die provisioning profiele word binne die foon gestoor in /Library/MobileDevice/ProvisioningProfiles
Simulator
{% hint style="info" %} Let daarop dat 'n simulator nie dieselfde is as 'n emulator. Die simulator simuleer net die gedrag van die toestel en funksies, maar gebruik hulle nie werklik nie. {% endhint %}
Simulator
Die eerste ding wat jy moet weet is dat om 'n pentest binne 'n simulator uit te voer baie meer beperk sal wees as om dit op 'n jailbroken toestel te doen.
Alle gereedskap wat benodig word om 'n iOS app te bou en te ondersteun, is slegs amptelik ondersteun op Mac OS.
Apple se de facto gereedskap vir die skep/debugging/instrumentering van iOS toepassings is Xcode. Dit kan gebruik word om ander komponente soos simulators en verskillende SDK weergawe wat benodig word om jou app te bou en te toets af te laai.
Dit word sterk aanbeveel om Xcode van die amptelike app winkel af te laai. Ander weergawes mag malware dra.
Die simulator lêers kan gevind word in /Users/<username>/Library/Developer/CoreSimulator/Devices
Om die simulator te open, hardloop Xcode, druk dan op die Xcode tab --> Open Developer tools --> Simulator
__In die volgende beeld kan jy deur op "iPod touch [...]" te klik, 'n ander toestel kies om op te toets:
Toepassings in die Simulator
Binne /Users/<username>/Library/Developer/CoreSimulator/Devices
kan jy al die geïnstalleerde simulators vind. As jy toegang wil hê tot die lêers van 'n toepassing wat binne een van die emulators geskep is, kan dit moeilik wees om te weet in watter een die app geïnstalleer is. 'n Vinige manier om die regte UID te vind is om die app in die simulator te laat loop en die volgende uit te voer:
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
However, surprisingly you won't find the application here. You need to access /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/
And in this folder you can find the package of the application.
Emulator
Corellium is the only publicly available iOS emulator. It is an enterprise SaaS solution with a per user license model and does not offer any trial license.
No Jailbreak needed
Check this blog post about how to pentest an iOS application in a non jailbroken device: https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
Jailbreaking
Apple vereis streng dat die kode wat op die iPhone loop onderteken moet wees deur 'n sertifikaat wat deur Apple uitgereik is. Jailbreaking is die proses om aktief soos beperkings te omseil en ander sekuriteitsbeheermaatreëls wat deur die OS ingestel is. Daarom, sodra die toestel gejailbreak is, word die integriteitskontrole wat verantwoordelik is vir die kontrole van geïnstalleerde toepassings, reggestel sodat dit omseil word.
{% hint style="info" %} In teenstelling met Android, kan jy nie na "Ontwikkelaarsmodus" in iOS oorgaan om ongetekende/onbetroubare kode op die toestel te loop nie. {% endhint %}
Android Rooting vs. iOS Jailbreaking
Terwyl dit dikwels vergelyk word, is rooting op Android en jailbreaking op iOS fundamenteel verskillende prosesse. Rooting Android-toestelle kan behels om die su
binaire te installeer of die stelsels met 'n ge-rootte pasgemaakte ROM te vervang, wat nie noodwendig eksplosiewe benodig as die bootloader ontgrendel is nie. Flashing pasgemaakte ROMs vervang die toestel se OS na die ontgrendeling van die bootloader, wat soms 'n eksplosiewe benodig.
In teenstelling hiermee kan iOS-toestelle nie pasgemaakte ROMs flits nie weens die bootloader se beperking om slegs Apple-ondertekende beelde te begin. Jailbreaking iOS het ten doel om Apple se kodeondertekening beskerming te omseil om ongetekende kode te laat loop, 'n proses wat bemoeilik word deur Apple se deurlopende sekuriteitsverbeterings.
Jailbreaking Challenges
Jailbreaking iOS word al hoe moeiliker namate Apple kwesbaarhede vinnig regstel. Downgrading iOS is slegs vir 'n beperkte tyd moontlik na 'n vrystelling, wat jailbreaking 'n tydsensitive saak maak. Toestelle wat vir sekuriteitstoetsing gebruik word, moet nie opgedateer word nie, tensy her-jailbreaking gewaarborg word.
iOS-opdaterings word beheer deur 'n uitdaging-respons meganisme (SHSH blobs), wat installasie slegs toelaat vir Apple-ondertekende antwoorde. Hierdie meganisme, bekend as 'n "onderteken venster", beperk die vermoë om OTA firmware-pakkette te stoor en later te gebruik. Die IPSW Downloads website is 'n hulpbron om huidige onderteken vensters te kontroleer.
Jailbreak Varieties
- Tethered jailbreaks vereis 'n rekenaarverbinding vir elke herbegin.
- Semi-tethered jailbreaks laat boot in nie-gejailbreakte modus toe sonder 'n rekenaar.
- Semi-untethered jailbreaks vereis handmatige her-jailbreaking sonder die behoefte aan 'n rekenaar.
- Untethered jailbreaks bied 'n permanente jailbreak-oplossing sonder die behoefte aan her-toepassing.
Jailbreaking Tools and Resources
Jailbreaking gereedskap verskil volgens iOS weergawe en toestel. Hulpbronne soos Can I Jailbreak?, The iPhone Wiki, en Reddit Jailbreak bied opdaterings inligting. Voorbeelde sluit in:
- Checkra1n vir A7-A11 chip toestelle.
- Palera1n vir Checkm8 toestelle (A8-A11) op iOS 15.0-16.5.
- Unc0ver vir iOS weergawes tot 14.8.
Die aanpassing van jou toestel dra risiko's, en jailbreaking moet met omsigtigheid benader word.
Jailbreaking Benefits and Risks
Jailbreaking verwyder OS-geplaasde sandboxing, wat toelaat dat toepassings toegang tot die hele lêerstelsel het. Hierdie vryheid stel die installasie van nie-goedgekeurde toepassings en toegang tot meer API's in staat. Tog, vir gewone gebruikers, word jailbreaking nie aanbeveel weens potensiële sekuriteitsrisiko's en toestel onstabiliteit.
After Jailbreaking
{% content-ref url="basic-ios-testing-operations.md" %} basic-ios-testing-operations.md {% endcontent-ref %}
Jailbreak Detection
Verskeie toepassings sal probeer om te detecteer of die mobiele toestel gejailbreak is en in daardie geval sal die toepassing nie loop nie
- Na jailbreaking is 'n iOS lêers en vouers gewoonlik geïnstalleer, hierdie kan gesoek word om te bepaal of die toestel gejailbreak is.
- In 'n gejailbreakte toestel kry toepassings lees/skryf toegang tot nuwe lêers buite die sandbox
- Sommige API oproepen sal anders optree
- Die teenwoordigheid van die OpenSSH diens
- Oproep van
/bin/sh
sal 1 teruggee in plaas van 0
Meer inligting oor hoe om jailbreaking te detecteer hier.
You can try to avoid this detections using objection's ios jailbreak disable
Jailbreak Detection Bypass
- You can try to avoid this detections using objection's
ios jailbreak disable
- You could also install the tool Liberty Lite (https://ryleyangus.com/repo/). Once the repo is added, the app should appear in the ‘Search’ tab
References
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.