iOS Testing Environment

Ondersteun HackTricks

Apple Ontwikkelaar Program

'n Provisioning identiteit 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 Ontwikkelaar Program om jou provisioning identiteit 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 gejailbreakte 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 --> Voorkeure --> Rekeninge --> + (Voeg nuwe Appli ID by jou geloofsbriewe) --> Klik op die Apple ID wat geskep is --> Bestuur Sertifikate --> + (Apple Ontwikkeling) --> 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 Instellings --> Algemeen --> Profiele en Toestuurbestuur --> 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 sleutelhouer items.

Die provisioning profiele word binne die foon gestoor in /Library/MobileDevice/ProvisioningProfiles

Simulator

Let daarop dat 'n simulator nie dieselfde is as 'n emulator nie. Die simulator simuleer net die gedrag van die toestel en funksies, maar gebruik hulle nie werklik nie.

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 gejailbreakte toestel te doen.

Al die 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 in die Xcode tab --> Open Ontwikkelaar gereedskap --> 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 hardloop 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.

Jailbeaking

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 nagaan van geïnstalleerde toepassings, gepatch sodat dit omseil word.

Unlike Android, you cannot switch to "Developer Mode" in iOS to run unsigned/untrusted code on the device.

Android Rooting vs. iOS Jailbreaking

While often compared, rooting on Android and jailbreaking on iOS are fundamentally different processes. Rooting Android devices might involve installing the su binary or replacing the system with a rooted custom ROM, which doesn't necessarily require exploits if the bootloader is unlocked. Flashing custom ROMs replaces the device's OS after unlocking the bootloader, sometimes requiring an exploit.

In contrast, iOS devices cannot flash custom ROMs due to the bootloader's restriction to only boot Apple-signed images. Jailbreaking iOS aims to bypass Apple's code signing protections to run unsigned code, a process complicated by Apple's continuous security enhancements.

Jailbreaking Challenges

Jailbreaking iOS is increasingly difficult as Apple patches vulnerabilities quickly. Downgrading iOS is only possible for a limited time after a release, making jailbreaking a time-sensitive matter. Devices used for security testing should not be updated unless re-jailbreaking is guaranteed.

iOS updates are controlled by a challenge-response mechanism (SHSH blobs), allowing installation only for Apple-signed responses. This mechanism, known as a "signing window", limits the ability to store and later use OTA firmware packages. The IPSW Downloads website is a resource for checking current signing windows.

Jailbreak Varieties

  • Tethered jailbreaks require a computer connection for each reboot.

  • Semi-tethered jailbreaks allow booting into non-jailbroken mode without a computer.

  • Semi-untethered jailbreaks require manual re-jailbreaking without needing a computer.

  • Untethered jailbreaks offer a permanent jailbreak solution without the need for re-application.

Jailbreaking Tools and Resources

Jailbreaking tools vary by iOS version and device. Resources such as Can I Jailbreak?, The iPhone Wiki, and Reddit Jailbreak provide up-to-date information. Examples include:

  • Checkra1n for A7-A11 chip devices.

  • Palera1n for Checkm8 devices (A8-A11) on iOS 15.0-16.5.

  • Unc0ver for iOS versions up to 14.8.

Modifying your device carries risks, and jailbreaking should be approached with caution.

Jailbreaking Benefits and Risks

Jailbreaking verwyder OS-geïndikte sandboxing, wat toepassings toelaat om toegang tot die hele lêerstelsel te verkry. Hierdie vryheid stel die installering van nie-goedgekeurde toepassings en toegang tot meer API's moontlik. egter, vir gewone gebruikers, is jailbreaking nie aanbeveel nie weens potensiële sekuriteitsrisiko's en toestel onstabiliteit.

After Jailbreaking

iOS Basic Testing Operations

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 'n iOS lêers en vouers word gewoonlik geïnstalleer, hierdie kan gesoek word om te bepaal of die toestel gejailbreak is.

  • In 'n gejailbreak 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

Support HackTricks

Last updated