- Provisioning Identity: Requires a $99/year Apple Developer Program subscription to obtain a provisioning identity for signing apps. Necessary to run apps from source code on physical devices.
- Free Provisioning Profile (Xcode 7.2+):
- Create a free iOS development provisioning profile in Xcode:
- Go to Xcode → Preferences → Accounts → Add Apple ID → Manage Certificates → Add Apple Development certificate.
- Trust the computer on the iPhone, then trust the untrusted profile in Settings → General → Profiles and Device Management.
- Allows testing on a real iPhone without jailbreaking.
- Create a free iOS development provisioning profile in Xcode:
- Resource Sharing: Apps signed with the same certificate can securely share resources (e.g., keychain items).
- Storage Location: Provisioning profiles are stored in
/Library/MobileDevice/ProvisioningProfileson the device.
- Simulator vs. Emulator: Simulators mimic device behavior but do not replicate exact hardware functionality, limiting pentesting capabilities compared to jailbroken devices.
- Requirements: Xcode is the primary tool for creating, debugging, and instrumenting iOS apps. Only officially supported on macOS.
- Download Xcode from the official App Store to avoid malware risks.
- Xcode includes simulators and SDKs for building and testing apps.
- Simulator Files: Located in
/Users/<username>/Library/Developer/CoreSimulator/Devices. - Accessing Simulator:
- Open Xcode → Xcode tab → Open Developer Tools → Simulator.
- Select different devices (e.g., iPod touch, iPhone) from the simulator interface.
- Application Files in Simulator:
-
Find installed simulators in
/Users/<username>/Library/Developer/CoreSimulator/Devices. -
Identify the correct simulator UID by running:
xcrun simctl list | grep BootedExample output:
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted). -
App data is located in
/Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application. -
App package is found in
/Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/.
-
- Corellium: The only publicly available iOS emulator. Enterprise SaaS solution with per-user licensing; no trial available.
- Overview: Bypasses Apple’s code-signing restrictions to run unsigned code, disabling integrity checks.
- Android vs. iOS:
- Android rooting may involve
subinary or custom ROMs, sometimes without exploits if the bootloader is unlocked. - iOS jailbreaking requires exploits to bypass code-signing protections; custom ROMs are not possible due to bootloader restrictions.
- Android rooting may involve
- Challenges:
- Apple patches vulnerabilities quickly, making jailbreaking difficult.
- Downgrading iOS is limited by signing windows (SHSH blobs). Check current signing windows at IPSW Downloads.
- Avoid updating devices used for testing unless re-jailbreaking is guaranteed.
- Jailbreak Types:
- Tethered: Requires a computer for each reboot.
- Semi-tethered: Boots in non-jailbroken mode without a computer.
- Semi-untethered: Requires manual re-jailbreaking without a computer.
- Untethered: Permanent jailbreak without re-application.
- Tools and Resources:
- Tools: Checkra1n (A7-A11 chips), Palera1n (A8-A11, iOS 15.0-16.5), Unc0ver (up to iOS 14.8).
- Resources: Can I Jailbreak?, The iPhone Wiki, Reddit Jailbreak.
- Caution: Jailbreaking carries risks of instability and security vulnerabilities.
- Benefits:
- Removes sandboxing, granting apps full filesystem access.
- Allows installation of unapproved apps and access to additional APIs.
- Risks:
- Not recommended for regular users due to security risks and potential device instability.
- Jailbreak Detection:
- Apps may detect jailbroken devices and refuse to run.
- Indicators of jailbreaking:
- Presence of jailbreak-related files/folders.
- Read/write access outside the sandbox.
- Altered API call behavior.
- OpenSSH service presence.
/bin/shreturns 1 instead of 0.
- More details: OWASP MASTG Jailbreak Detection.
- Bypassing Jailbreak Detection:
- Use
objectioncommand:ios jailbreak disable. - Install Liberty Lite via the repo’s Search tab.
- Use